﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PROAD.atendimento.Consulta
{
    public partial class ConsultaAgenda : System.Web.UI.Page
    {

        DADOS.esf.metEsf metEsf = new DADOS.esf.metEsf();
        DADOS.agenda.metAgenda metAgenda = new DADOS.agenda.metAgenda();

        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                ConfigurarCalendarios();
                CarregarAgendas();
            }
            
        }

        protected void ConfigurarCalendarios()
        {
            CofigCalendarEquipe1();
            CofigCalendarEquipe2();
            CofigCalendarEquipe3();
        }

        protected void CofigCalendarEquipe1()
        {
            CalendarioEs1.CellSpacing = 4;
            CalendarioEs1.CellPadding = 4;
        }

        protected void CofigCalendarEquipe2()
        {
            CalendarioEs2.CellSpacing = 4;
            CalendarioEs2.CellPadding = 4;
        }

        protected void CofigCalendarEquipe3()
        {
            CalendarioEs3.CellSpacing = 4;
            CalendarioEs3.CellPadding = 4;
        }



        protected void CarregarAgendaEquipe1DataSelecionada(string strCodEquipe, string dtSelecionada)
        {
            dtSelecionada = dtSelecionada.Substring(0, 10);
            AgendaEs1.DataSource = metAgenda.ListarAgendaEquipeSel(strCodEquipe, dtSelecionada);
            AgendaEs1.DataBind();
        }

        protected void CarregarAgendaEquipe2DataSelecionada(string strCodEquipe, string dtSelecionada)
        {
            dtSelecionada = dtSelecionada.Substring(0, 10);
            AgendaEs2.DataSource = metAgenda.ListarAgendaEquipeSel(strCodEquipe, dtSelecionada);
            AgendaEs2.DataBind();
        }

        protected void CarregarAgendaEquipe3DataSelecionada(string strCodEquipe, string dtSelecionada)
        {
            dtSelecionada = dtSelecionada.Substring(0, 10);
            AgendaEs3.DataSource = metAgenda.ListarAgendaEquipeSel(strCodEquipe, dtSelecionada);
            AgendaEs3.DataBind();
        }

        protected void CarregarAgendas()
        {
            //var listEs = metEsf.ListarESProfissional("2");
            var listEs = metEsf.ListarESProfissional(Session["CO_PROFISSIONAL"].ToString());

            if (listEs != null)
            {
                if (listEs.Tables[0].Rows.Count > 0)
                {
                    int count = 1;
                    foreach (DataRow objEs in listEs.Tables[0].Rows)
                    {
                        var ob = metEsf.Selecionar(Convert.ToInt32(objEs["CO_ES"].ToString()));
                        switch (count)
                        {
                            case 1:
                                CalendarioEs1.SelectedDate = DateTime.Now.Date;
                                RadEquipe1.Title = "Agenda da " + ob.NO_ES;
                                HidCodEsquipe1.Value = objEs["CO_ES"].ToString();
                                CarregarAgendaEquipe1DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
                                break;
                            case 2:
                                CalendarioEs2.SelectedDate = DateTime.Now.Date;
                                RadEquipe2.Title = "Agenda da " + ob.NO_ES;
                                HidCodEsquipe2.Value = objEs["CO_ES"].ToString();
                                CarregarAgendaEquipe2DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
                                break;
                            case 3:
                                CalendarioEs3.SelectedDate = DateTime.Now.Date;
                                RadEquipe3.Title = "Agenda da " + ob.NO_ES;
                                HidCodEsquipe3.Value = objEs["CO_ES"].ToString();
                                CarregarAgendaEquipe3DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
                                break;
                        }
                        count++;
                    }

                    int intNrEquipe = Convert.ToInt32(listEs.Tables[0].Rows.Count);

                    switch (intNrEquipe)
                    {
                        case 1:
                            RadZoneEquipe1.Visible = true;
                            RadZoneEquipe2.Visible = false;
                            RadZoneEquipe3.Visible = false;
                            break;
                        case 2:
                            RadZoneEquipe1.Visible = true;
                            RadZoneEquipe2.Visible = true;
                            RadZoneEquipe3.Visible = false;
                            break;
                        case 3:
                            RadZoneEquipe1.Visible = true;
                            RadZoneEquipe2.Visible = true;
                            RadZoneEquipe3.Visible = true;
                            break;

                    }
                }
            }


        }

        protected void CalendarioEs1_SelectionChanged(object sender, EventArgs e)
        {
            CarregarAgendaEquipe1DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
        }

        protected void CalendarioEs1_DayRender(object sender, DayRenderEventArgs e)
        {
            DataSet listEquipe1 = metAgenda.ListarAgendaEquipe(HidCodEsquipe1.Value);

            if (listEquipe1 != null)
            {
                if (listEquipe1.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow objAgenda in listEquipe1.Tables[0].Rows)
                    {
                        var dt = Convert.ToDateTime(objAgenda["DT_AGENDA"].ToString()).Date;
                        if (e.Day.Date == dt && CalendarioEs1.SelectedDate != dt)
                        {
                            e.Cell.BackColor = Color.Red;
                        }
                    }
                }
            }
            
        }

        protected void CalendarioEs2_SelectionChanged(object sender, EventArgs e)
        {
            CarregarAgendaEquipe2DataSelecionada(HidCodEsquipe2.Value, CalendarioEs2.SelectedDate.Date.ToString());
        }

        protected void CalendarioEs2_DayRender(object sender, DayRenderEventArgs e)
        {
            DataSet listEquipe2 = metAgenda.ListarAgendaEquipe(HidCodEsquipe2.Value);

            if (listEquipe2 != null)
            {
                if (listEquipe2.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow objAgenda in listEquipe2.Tables[0].Rows)
                    {
                        var dt = Convert.ToDateTime(objAgenda["DT_AGENDA"].ToString()).Date;
                        if (e.Day.Date == dt && CalendarioEs2.SelectedDate != dt)
                        {
                            e.Cell.BackColor = Color.Red;
                        }
                    }
                }
            }

        }

        protected void CalendarioEs3_SelectionChanged(object sender, EventArgs e)
        {
            CarregarAgendaEquipe3DataSelecionada(HidCodEsquipe3.Value, CalendarioEs3.SelectedDate.Date.ToString());
        }

        protected void CalendarioEs3_DayRender(object sender, DayRenderEventArgs e)
        {
            DataSet listEquipe3 = metAgenda.ListarAgendaEquipe(HidCodEsquipe3.Value);

            if (listEquipe3 != null)
            {
                if (listEquipe3.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow objAgenda in listEquipe3.Tables[0].Rows)
                    {
                        var dt = Convert.ToDateTime(objAgenda["DT_AGENDA"].ToString()).Date;
                        if (e.Day.Date == dt && CalendarioEs3.SelectedDate != dt)
                        {
                            e.Cell.BackColor = Color.Red;
                        }
                    }
                }
            }

        }

        protected void AgendaEs1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var acao = e.CommandName;
            var idAgenda = e.CommandArgument;
            var objUsuario = metAgenda.PegarUusarioAgenda(Convert.ToInt32(idAgenda));

            switch (acao)
            {
                case "Atender":
                    
                    Session["CO_USUARIO"] = objUsuario.CO_USUARIO;
                    Session["NO_NOME"] = objUsuario.NO_NOME;
                    Response.Redirect("/atendimento/Consulta/ConsultaDadosPaciente.aspx");
                    break;
                case "Remarcar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "1";
                    txtDtRemancaAgenda.Text = CalendarioEs1.SelectedDate.Date.ToString();
                    HidCodEsquipe1.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalRemarcar.Show();
                    break;
                case "Cancelar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "1";
                    HidCodEsquipe1.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalCancelarAgenda.Show();
                    break;
            }

        }

        protected void AgendaEs2_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var acao = e.CommandName;
            var idAgenda = e.CommandArgument;
            var objUsuario = metAgenda.PegarUusarioAgenda(Convert.ToInt32(idAgenda));
            switch (acao)
            {
                case "Atender":
                    Session["CO_USUARIO"] = objUsuario.CO_USUARIO;
                    Session["NO_NOME"] = objUsuario.NO_NOME;
                    Response.Redirect("/atendimento/Consulta/ConsultaDadosPaciente.aspx");
                    break;
                case "Remarcar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "2";
                    txtDtRemancaAgenda.Text = CalendarioEs2.SelectedDate.Date.ToString();
                    HidCodEsquipe2.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalRemarcar.Show();
                    break;
                case "Cancelar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "2";
                    txtObsCancelaAgenda.Text = "";
                    HidCodEsquipe2.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalCancelarAgenda.Show();
                    break;
            }

        }

        protected void AgendaEs3_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var acao = e.CommandName;
            var idAgenda = e.CommandArgument;
            var objUsuario = metAgenda.PegarUusarioAgenda(Convert.ToInt32(idAgenda));
            switch (acao)
            {
                case "Atender":
                    
                    Session["CO_USUARIO"] = objUsuario.CO_USUARIO;
                    Session["NO_NOME"] = objUsuario.NO_NOME;
                    Response.Redirect("/atendimento/Consulta/ConsultaDadosPaciente.aspx");
                    break;
                case "Remarcar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "3";
                    txtDtRemancaAgenda.Text = CalendarioEs3.SelectedDate.Date.ToString();
                    HidCodEsquipe3.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalRemarcar.Show();
                    break;
                case "Cancelar":
                    hidCodAgenda.Value = idAgenda.ToString();
                    hidQualEquipe.Value = "3";
                    HidCodEsquipe3.Value = objUsuario.CO_ES.ToString();
                    lblErroRemarcacao.Text = "";
                    ModalCancelarAgenda.Show();
                    break;
            }

        }

        protected Boolean ValidarFormRemacacao()
        {
            try
            {
                Convert.ToDateTime(txtDtRemancaAgenda.Text);
            }
            catch (Exception)
            {
                lblErroRemarcacao.Text = "Favor selecionar um data válida para remarcação!";
                return false;
            }

            return true;
        }

        protected Boolean ValidarFormCancelamento()
        {
            if (txtObsCancelaAgenda.Text.Length < 5)
            {
                lblErroCancelamento.Text = "Favor digitar um motivo para remarcação!";
                return false;
            }
            return true;
        }

        protected void btnCancelarAgenda_Click(object sender, EventArgs e)
        {
            if (ValidarFormCancelamento())
            {
                metAgenda.CancelarAgenda(Convert.ToInt32(hidCodAgenda.Value), txtObsCancelaAgenda.Text);

                switch (hidQualEquipe.Value)
                {
                    case "1":
                        CarregarAgendaEquipe1DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
                        break;
                    case "2":
                        CarregarAgendaEquipe2DataSelecionada(HidCodEsquipe2.Value, CalendarioEs2.SelectedDate.Date.ToString());
                        break;
                    case "3":
                        CarregarAgendaEquipe3DataSelecionada(HidCodEsquipe3.Value, CalendarioEs3.SelectedDate.Date.ToString());
                        break;
                }

                txtTituloMsn.Text = "Alerta";
                txtTextoMsn.Text = "Agenda cancelada com sucesso!";
            }
            else
            {
                ModalCancelarAgenda.Show();
            }
        }

        protected void btnRemarcarAgenda_Click(object sender, EventArgs e)
        {
            if (ValidarFormRemacacao())
            {
                metAgenda.RemarcarAgenda(Convert.ToInt32(hidCodAgenda.Value), Convert.ToDateTime(txtDtRemancaAgenda.Text), Convert.ToInt32(Session["CO_PROFISSIONAL"].ToString()));

                switch (hidQualEquipe.Value)
                {
                    case "1":
                        CarregarAgendaEquipe1DataSelecionada(HidCodEsquipe1.Value, CalendarioEs1.SelectedDate.Date.ToString());
                        break;
                    case "2":
                        CarregarAgendaEquipe2DataSelecionada(HidCodEsquipe2.Value, CalendarioEs2.SelectedDate.Date.ToString());
                        break;
                    case "3":
                        CarregarAgendaEquipe3DataSelecionada(HidCodEsquipe3.Value, CalendarioEs3.SelectedDate.Date.ToString());
                        break;
                }

                txtTituloMsn.Text = "Alerta";
                txtTextoMsn.Text = "Agenda remarcada com sucesso!";
            }else
            {
                ModalRemarcar.Show();
            }
        }
    }
}